<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>

<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="pandoc" />



<meta name="progressive" content="true" />
<meta name="allow-skip" content="false" />
<meta name="learnr-version-prerender" content="0.11.2" />

<title>Map</title>

<!-- header-includes START -->
<!-- HEAD_CONTENT -->
<!-- header-includes END -->
<!-- HEAD_CONTENT -->

<!-- highlightjs -->
<style type="text/css">code{white-space: pre;}</style>
<style type="text/css">
  pre:not([class]) {
    background-color: white;
  }
</style>
<script type="text/javascript">
if (window.hljs) {
  hljs.configure({languages: []});
  hljs.initHighlightingOnLoad();
  if (document.readyState && document.readyState === "complete") {
    window.setTimeout(function() { hljs.initHighlighting(); }, 0);
  }
}
</script>


<!-- taken from https://github.com/rstudio/rmarkdown/blob/de8a9c38618903627ca509f5401d50a0876079f7/inst/rmd/h/default.html#L293-L343 -->
<!-- tabsets -->
<style type="text/css">
.tabset-dropdown > .nav-tabs {
  display: inline-table;
  max-height: 500px;
  min-height: 44px;
  overflow-y: auto;
  border: 1px solid #ddd;
  border-radius: 4px;
}

.tabset-dropdown > .nav-tabs > li.active:before {
  content: "";
  font-family: 'Glyphicons Halflings';
  display: inline-block;
  padding: 10px;
  border-right: 1px solid #ddd;
}

.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
  content: "&#xe258;";
  border: none;
}

.tabset-dropdown > .nav-tabs.nav-tabs-open:before {
  content: "";
  font-family: 'Glyphicons Halflings';
  display: inline-block;
  padding: 10px;
  border-right: 1px solid #ddd;
}

.tabset-dropdown > .nav-tabs > li.active {
  display: block;
}

.tabset-dropdown > .nav-tabs > li > a,
.tabset-dropdown > .nav-tabs > li > a:focus,
.tabset-dropdown > .nav-tabs > li > a:hover {
  border: none;
  display: inline-block;
  border-radius: 4px;
  background-color: transparent;
}

.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
  display: block;
  float: none;
}

.tabset-dropdown > .nav-tabs > li {
  display: none;
}
</style>
<!-- end tabsets -->


</head>

<body>
<a class='sr-only sr-only-focusable visually-hidden-focusable' href='#learnr-tutorial-content'>Skip to Tutorial Content</a>



<div class="pageContent band">
<main class="bandContent page">

<article class="topics" id="learnr-tutorial-content">

<script src="https://w.appzi.io/bootstrap/bundle.js?token=NRNiQ" async></script>
<script src="https://browser.sentry-cdn.com/5.21.4/bundle.apm.min.js" integrity="sha384-4iMQu5uGcoGo8jttwZVa9umqdaAA5E7OUhekefo18Nn/nLaif8dYItg9rh7WGAN/" crossorigin="anonymous"></script>
<script>
Sentry.init({ dsn: "https://c38ae611b3f5402ebc3f425e7dfc3b6b@o78818.ingest.sentry.io/5403114" });
$(document).on('shiny:connected', function(event) {
       Sentry.addBreadcrumb({
         message: 'websocket connected',
         level: Sentry.Severity.Debug,
         data: {
          readyState: event.socket.readyState
         }
       });
     });
     $(document).on('shiny:disconnected', function(event) {
       Sentry.addBreadcrumb({
         message: 'websocket disconnected',
         level: Sentry.Severity.Debug,
         data: {
          readyState: event.socket.readyState,
          closed: event.socket._closed
         }
       });

       if (event.socket._closed === false && event.socket.allowReconnect === true){
         // Abrupt, unintended close.
         Sentry.captureException(new Error('Shiny crash'));
       }
     });

     $(document).on('shiny:sessioninitialized shiny:busy shiny:idle shiny:inputchanged shiny:unbound shiny:value shiny:error shiny:outputinvalidated shiny:recalculating shiny:recalculated shiny:updateinput shiny:filedownload', function (e) {
       Sentry.addBreadcrumb({
         message: e.type,
         level: Sentry.Severity.Debug,
         data: {
          name: e.name,
          target: e.target
         }
       });
     });
</script>
<div id="section-map" class="section level2">
<h2>Map</h2>
<div id="section-section" class="section level3">
<h3></h3>
<p>添加一些中文试试看</p>
<p>The <code>map()</code> function comes in the purrr package. purrr is
a package of tools that can help you apply functions in an iterative
way.</p>
<p>purrr is installed when you run
<code>install.packages("tidyverse")</code>.<br />
purrr is loaded when you run <code>library(tidyverse)</code></p>
<ul>
<li>Load purrr now (it is already installed). Then click Submit
Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="purrr" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="purrr-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>library(tidyverse)</code></pre>
</div>
</div>
<div id="section-map-1" class="section level3">
<h3>map()</h3>
<p>The job of purrr’s <code>map()</code> function is to apply an R
function to each element of an R vector. <code>map()</code> requires two
arguments, in this order:</p>
<ol style="list-style-type: decimal">
<li>A vector to iterate over. <code>map()</code> works with simple
vectors as well as lists.<br />
</li>
<li>A function to apply to each element in the vector. Give
<code>map()</code> the name of the function without quotes around it and
without parentheses behind it.</li>
</ol>
<p>Here, <code>map()</code> applies the absolute value function to each
element of <code>negatives</code>.</p>
<pre class="r"><code>negatives &lt;- list(-25, -31, -111)
map(negatives, abs)</code></pre>
<pre><code>## [[1]]
## [1] 25
## 
## [[2]]
## [1] 31
## 
## [[3]]
## [1] 111</code></pre>
</div>
<div id="section-section-1" class="section level3">
<h3></h3>
<p>Think of <code>map()</code> like this. Each circle of squares
represents a vector, and each square represents an element of the
vector:</p>
<pre><code>## Error in knitr::include_graphics(&quot;www/images/map.png&quot;): Cannot find the file(s): &quot;www/images/map.png&quot;</code></pre>
</div>
<div id="section-section-2" class="section level3">
<h3></h3>
<pre class="r"><code>list1 &lt;- list(1, 2, 3, 4, 5)</code></pre>
<ul>
<li>Use the code chunk below to map <code>log()</code> over the elements
of <code>list1</code>. Then click Submit Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="map1" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="map1-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>map(list1, log)</code></pre>
</div>
<div class="tutorial-exercise-support" data-label="map1-hint-1"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;Begin with map().&quot;</code></pre>
</div>
<div class="tutorial-exercise-support" data-label="map1-hint-2"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;Make list1 the first argument of map().&quot;</code></pre>
</div>
<div class="tutorial-exercise-support" data-label="map1-hint-3"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;Make log the second argument of map().&quot;</code></pre>
</div>
<div class="tutorial-exercise-support" data-label="map1-hint-4"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;Do not put parentheses behind log. log returns the code stored in the log function. log() executes the code and returns the results, which would then be passed to map() (if log() didn&#39;t throw an error that is; log() needs an argument to execute the code successfully.)&quot;</code></pre>
</div>
</div>
<div id="section-functional-programming" class="section level3">
<h3>Functional programming</h3>
<p>It may seem weird to you that <code>map()</code> takes a function as
an argument, but it is not weird at all. In R, functions are objects
that can be passed around just like everything else.</p>
<p>These questions will help you get a feel for it.</p>
<ul>
<li>Use this code block as a scratch pad to help you answer the
questions below.</li>
</ul>
<div class="tutorial-exercise" data-label="map3" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":false,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="panel-heading tutorial-quiz-title"></div>
<div class="panel panel-default tutorial-question-container">
<div data-label="q1-1" class="tutorial-question panel-body">
<div id="q1-1-answer_container" class="shiny-html-output"></div>
<div id="q1-1-message_container" class="shiny-html-output"></div>
<div id="q1-1-action_button_container" class="shiny-html-output"></div>
<script>if (Tutorial.triggerMathJax) Tutorial.triggerMathJax()</script>
</div>
</div>
<div class="panel panel-default tutorial-question-container">
<div data-label="q1-2" class="tutorial-question panel-body">
<div id="q1-2-answer_container" class="shiny-html-output"></div>
<div id="q1-2-message_container" class="shiny-html-output"></div>
<div id="q1-2-action_button_container" class="shiny-html-output"></div>
<script>if (Tutorial.triggerMathJax) Tutorial.triggerMathJax()</script>
</div>
</div>
<div class="panel panel-default tutorial-question-container">
<div data-label="q1-3" class="tutorial-question panel-body">
<div id="q1-3-answer_container" class="shiny-html-output"></div>
<div id="q1-3-message_container" class="shiny-html-output"></div>
<div id="q1-3-action_button_container" class="shiny-html-output"></div>
<script>if (Tutorial.triggerMathJax) Tutorial.triggerMathJax()</script>
</div>
</div>
<p>By the way, you will need to click Run Code above at least once
before you can continue.</p>
</div>
<div id="section-what-about-the-output" class="section level3">
<h3>What about the output?</h3>
<p>You give <code>map()</code> a vector and a function.
<code>map()</code> always gives you a list. The <em>nth</em> element of
the list will be the result of applying your function to the
<em>nth</em> element of your vector.</p>
<p>This is convenient for two reasons:</p>
<ol style="list-style-type: decimal">
<li><code>map()</code> can handle anything that comes out of your
function, even a data frame. Why? Because you can put anything into a
list.</li>
<li><code>map()</code> is easy to use in pipes because it takes a vector
as its first argument and returns a vector (a list is a type of vector).
Here’s an example.</li>
</ol>
<ul>
<li>Predict what this code will return and then click Submit
Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="map2" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<pre class="text"><code>list1 %&gt;% 
  map(log) %&gt;% 
  map(round)</code></pre>
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="map2-hint"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;Just click Submit Answer to see if your prediction is correct.&quot;</code></pre>
</div>
</div>
</div>
<div id="section-inputs-and-outputs" class="section level2">
<h2>Inputs and Outputs</h2>
<div id="section-arguments" class="section level3">
<h3>Arguments</h3>
<p>What if you want to pass <code>map()</code> a function that uses
extra arguments?</p>
<p>For example, you would give <code>round()</code> an extra argument
named <code>digits</code> if you wanted to round to a certain number of
digits past the decimal place, e.g.</p>
<pre class="r"><code>round(3.141593, digits = 2)</code></pre>
<pre><code>## [1] 3.14</code></pre>
</div>
<div id="section-section-3" class="section level3">
<h3></h3>
<p>You can pass extra arguments for your function <em>to</em>
<code>map()</code> as if they were arguments <em>of</em>
<code>map()</code>. <code>map()</code> will forward the arguments to
your function when it calls the function. You will almost always want to
name these arguments, e.g.</p>
<pre class="r"><code>list1 %&gt;% 
  map(log) %&gt;% 
  map(round, digits = 2)</code></pre>
<pre><code>## [[1]]
## [1] 0
## 
## [[2]]
## [1] 0.69
## 
## [[3]]
## [1] 1.1
## 
## [[4]]
## [1] 1.39
## 
## [[5]]
## [1] 1.61</code></pre>
</div>
<div id="section-section-4" class="section level3">
<h3></h3>
<p>Can you do it?</p>
<ul>
<li>Use the little known <code>base</code> argument of
<code>log()</code> to compute the base 2 log of each element in
<code>list1</code>. Then click Submit Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="map4" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="map4-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>map(list1, log, base = 2)</code></pre>
</div>
<div class="tutorial-exercise-support" data-label="map4-hint"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;Begin with map(list1, log).&quot;</code></pre>
</div>
</div>
<div id="section-输出格式" class="section level3">
<h3>输出格式</h3>
<p>So far all of our functions have returned a list of numbers. This is
a bit silly, because (as you’ve seen) it can be hard to work with
lists.</p>
<p>What if you want to return the results as a simple vector (i.e. not a
list)?</p>
</div>
<div id="section-map_dbl" class="section level3">
<h3>map_dbl()</h3>
<p>You could do that with <code>map_dbl()</code>.</p>
<p><code>map_dbl()</code> works exactly like <code>map()</code>, except
it returns its results in a numeric vector. (dbl is short for “double”,
the computer name for a number that can contain a decimal).</p>
<ul>
<li>Change the code below to use <code>map_dbl()</code> then click
Submit Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="map_dbl" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<pre class="text"><code>map(list1, log)</code></pre>
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="map_dbl-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>map_dbl(list1, log)</code></pre>
</div>
</div>
<div id="section-other-types-of-output" class="section level3">
<h3>Other types of output</h3>
<p>But suppose our function does not return doubles. For example,
<code>str_sub()</code> from the stringr package returns characters.
Here, it will return the first character in each string.</p>
<ul>
<li>Will the code work? Click Run Code to find out.</li>
</ul>
<div class="tutorial-exercise" data-label="map_dbl2" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<pre class="text"><code>library(stringr)
strings &lt;- list(&quot;Mary&quot;, &quot;John&quot;, &quot;Jill&quot;)
map_dbl(strings, str_sub, start = 1, end = 1)</code></pre>
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":false,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
</div>
<div id="section-section-5" class="section level3">
<h3></h3>
<p>The code didn’t work because <code>str_sub()</code> returns a set of
characters, but <code>map_dbl()</code> builds a double (numeric)
vector.</p>
<p>In R, each non-list vector has a type. You can only save doubles in a
double vector. You’d save characters in a <em>character vector</em>. Are
you out of luck?</p>
</div>
<div id="section-section-6" class="section level3">
<h3></h3>
<p>No. purrr provides eight versions of <code>map()</code>. Each returns
its results in a different format.</p>
<table>
<colgroup>
<col width="17%" />
<col width="82%" />
</colgroup>
<thead>
<tr class="header">
<th>Function</th>
<th>Output</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>map()</code></td>
<td>list</td>
</tr>
<tr class="even">
<td><code>map_chr()</code></td>
<td>character vector</td>
</tr>
<tr class="odd">
<td><code>map_dbl()</code></td>
<td>double (numeric) vector</td>
</tr>
<tr class="even">
<td><code>map_dfc()</code></td>
<td>data frame (output column binded)</td>
</tr>
<tr class="odd">
<td><code>map_dfr()</code></td>
<td>data frame (output row binded)</td>
</tr>
<tr class="even">
<td><code>map_int()</code></td>
<td>integer vector</td>
</tr>
<tr class="odd">
<td><code>map_lgl()</code></td>
<td>logical vector</td>
</tr>
<tr class="even">
<td><code>walk()</code></td>
<td>returns the input invisibly (used to trigger side effects)</td>
</tr>
</tbody>
</table>
<p>The last function, <code>walk()</code>, is used for functions that do
not return an output to the command line, like functions that plot
graphs or save files.</p>
</div>
<div id="section-section-7" class="section level3">
<h3></h3>
<p>The idea behind purrr is that you can choose the map function that
returns the type of output that you need.</p>
<ul>
<li>Replace <code>map_dbl()</code> in the code below . Choose the
replacement that will make the code work. Then click Submit Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="map_chr" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<pre class="text"><code>strings &lt;- list(&quot;Mary&quot;, &quot;John&quot;, &quot;Jill&quot;)

map_dbl(strings, str_sub, start = 1, end = 1)</code></pre>
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="map_chr-hint"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;str_sub() returns characters.&quot;</code></pre>
</div>
<div class="tutorial-exercise-support" data-label="map_chr-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>strings &lt;- list(&quot;Mary&quot;, &quot;John&quot;, &quot;Jill&quot;)

map_chr(strings, str_sub, start = 1, end = 1)</code></pre>
</div>
</div>
</div>
<div id="section-case-study" class="section level2">
<h2>Case Study</h2>
<div id="section-section-8" class="section level3">
<h3></h3>
<p><code>ldeaths</code> is a list that records monthly deaths in the UK
from lung disease. The data spans the years 1974 to 1979, and is divided
year.</p>
<ul>
<li>Check it out. Click Submit Answer to see the contents of
<code>ldeaths</code>.</li>
</ul>
<div class="tutorial-exercise" data-label="ldeaths-1"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>ldeaths</code></pre>
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
</div>
<div id="section-deaths-by-year" class="section level3">
<h3>Deaths by year</h3>
<p>It would be helpful to know how many people died each year from lung
disease. Then you could see if deaths decreased over time. Can you find
out?</p>
<ul>
<li>Use a map function to compute the sum of each vector in
<code>ldeaths</code>. Then click Submit Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="ldeaths-sum"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="ldeaths-sum-hint"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;The sums will be numbers (doubles).&quot;</code></pre>
</div>
<div class="tutorial-exercise-support" data-label="ldeaths-sum-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>map_dbl(ldeaths, sum)</code></pre>
</div>
</div>
<div id="section-total-deaths" class="section level3">
<h3>Total deaths</h3>
<p>Take it a step further.</p>
<ul>
<li>Compute the <em>total</em> number of deaths in the data set. This
will be the sum of your last result. Then click Submit Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="ldeaths-total"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="ldeaths-total-hint-1"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;This will take two steps.&quot;</code></pre>
</div>
<div class="tutorial-exercise-support" data-label="ldeaths-total-hint-2"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;The second step will be easier if you use map_dbl() in your first step.&quot;</code></pre>
</div>
<div class="tutorial-exercise-support"
data-label="ldeaths-total-solution" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<pre class="text"><code>sum(map_dbl(ldeaths, sum))</code></pre>
</div>
</div>
<div id="section-pipes" class="section level3">
<h3>Pipes</h3>
<p>Now that you are doing multi-step operations, you should begin using
the pipe operator if you aren’t already. The pipe operator
(<code>%&gt;%</code>) is great for single step operations too.</p>
<ul>
<li><p>Take a moment to convert this code to use the pipe operator. Then
click Submit Answer.</p>
<p>Note: Recall that the pipe operator takes the output of whatever is
on its left hand side and passes it to the first argument of the
function that is on its right hand side. So <code>x %&gt;% f()</code> is
the same as <code>f(x)</code> and <code>x %&gt;% f() %&gt;% g()</code>
is the same as <code>g(f(x))</code>.</p></li>
</ul>
<div class="tutorial-exercise" data-label="ldeaths-pipe"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>sum(map_dbl(ldeaths, sum))</code></pre>
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="ldeaths-pipe-hint"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;You will need to use two pipe operators to convert this expression into a pipe.&quot;</code></pre>
</div>
<div class="tutorial-exercise-support"
data-label="ldeaths-pipe-solution" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<pre class="text"><code>ldeaths %&gt;% 
  map_dbl(sum) %&gt;%
  sum()</code></pre>
</div>
</div>
<div id="section-sum-by-month" class="section level3">
<h3>Sum by month</h3>
<p>Let’s sum across months to see if there is a seasonal effect.</p>
<p>Mathematically, this is as simple as your previous computations.
Programatically, it is a challenge: your data is not set up in a way
that makes it easy to sum across months. You’ll need a strategy.</p>
</div>
<div id="section-section-9" class="section level3">
<h3></h3>
<p>If you’ve taken the Work with Data primer recently, you might have a
strategy in mind:</p>
<ol style="list-style-type: decimal">
<li>If you can get your data to look like this:</li>
</ol>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":["Jan"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["Feb"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["Mar"],"name":[3],"type":["dbl"],"align":["right"]},{"label":["Apr"],"name":[4],"type":["dbl"],"align":["right"]},{"label":["May"],"name":[5],"type":["dbl"],"align":["right"]},{"label":["Jun"],"name":[6],"type":["dbl"],"align":["right"]},{"label":["Jul"],"name":[7],"type":["dbl"],"align":["right"]},{"label":["Aug"],"name":[8],"type":["dbl"],"align":["right"]},{"label":["Sep"],"name":[9],"type":["dbl"],"align":["right"]},{"label":["Oct"],"name":[10],"type":["dbl"],"align":["right"]},{"label":["Nov"],"name":[11],"type":["dbl"],"align":["right"]},{"label":["Dec"],"name":[12],"type":["dbl"],"align":["right"]}],"data":[{"1":"3035","2":"2552","3":"2704","4":"2554","5":"2014","6":"1655","7":"1721","8":"1524","9":"1596","10":"2074","11":"2199","12":"2512"},{"1":"2933","2":"2889","3":"2938","4":"2497","5":"1870","6":"1726","7":"1607","8":"1545","9":"1396","10":"1787","11":"2076","12":"2837"},{"1":"2787","2":"3891","3":"3179","4":"2011","5":"1636","6":"1580","7":"1489","8":"1300","9":"1356","10":"1653","11":"2013","12":"2823"},{"1":"3102","2":"2294","3":"2385","4":"2444","5":"1748","6":"1554","7":"1498","8":"1361","9":"1346","10":"1564","11":"1640","12":"2293"},{"1":"2815","2":"3137","3":"2679","4":"1969","5":"1870","6":"1633","7":"1529","8":"1366","9":"1357","10":"1570","11":"1535","12":"2491"},{"1":"3084","2":"2605","3":"2573","4":"2143","5":"1693","6":"1504","7":"1461","8":"1354","9":"1333","10":"1492","11":"1781","12":"1915"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
  </script>
</div>
<ol start="2" style="list-style-type: decimal">
<li>Then you can use dplyr’s <code>summarise()</code> function to sum
the columns.</li>
</ol>
<p>Do just that, but fair warning: you’re going to bump into a couple of
surprises—just like when you wrangle data in real life.</p>
</div>
<div id="section-step-1---a-data-frame" class="section level3">
<h3>Step 1 - A data frame</h3>
<p>For Step 1, you can use a map function to combine your vectors into a
data frame. Do you recall which map functions return a single data
frame? There were two of them.</p>
</div>
<div id="section-section-10" class="section level3">
<h3></h3>
<ol style="list-style-type: decimal">
<li><code>map_dfr()</code> adds each element to the first as
<em>rows</em> (exactly what you want)</li>
<li><code>map_dfc()</code> adds each element to the first as
<em>columns</em></li>
</ol>
<p>But each function expects to iterate over a set of <em>data
frames</em> and <code>ldeaths</code> contains a set of vectors. To make
<code>map_dfr()</code> work, you will need to pass it a function that
turns the vectors in <code>ldeaths</code> into data frames for
<code>map_dfr()</code> to combine.</p>
</div>
<div id="section-as_tibble" class="section level3">
<h3>as_tibble()</h3>
<p>R has many functions that can turn a vector into a data frame:
<code>data.frame()</code>, <code>as.data.frame()</code>,
<code>data_frame()</code>, <code>as_data_frame()</code>, are some of
them.</p>
<p>I prefer to use <code>as_tibble()</code>. <code>as_tibble()</code>
converts the vector to a data frame <em>and</em> adds the helpful tibble
class to the data frame. As a result, the data frame prints nicely at
the command line.</p>
<ul>
<li>Try it out. Use <code>as_tibble()</code> to convert the vector below
into a data frame.</li>
</ul>
<div class="tutorial-exercise" data-label="as_tibble"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>named_vec &lt;- c(uno = 1, dos = 2, tres = 3)
named_vec</code></pre>
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="as_tibble-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>named_vec &lt;- c(uno = 1, dos = 2, tres = 3)
as_tibble(named_vec)</code></pre>
</div>
</div>
<div id="section-section-11" class="section level3">
<h3></h3>
<p>Now that you know how <code>as_tibble()</code> works,</p>
<ul>
<li>Use <code>map()</code> to map <code>as_tibble()</code> over the
vectors in <code>ldeaths</code>. Then click Submit Answer. (For now, use
<code>map()</code> instead of <code>map_dfr()</code>, this will help you
see what happens step-by-step as you wrangle the data.)</li>
<li>Inspect the results closely. What happens?</li>
</ul>
<div class="tutorial-exercise" data-label="as_tibble-2"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="as_tibble-2-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>ldeaths %&gt;% 
  map(as_tibble)</code></pre>
</div>
</div>
<div id="section-row-or-column" class="section level3">
<h3>Row or column?</h3>
<p><code>as_tibble()</code> turned each vector into a data frame with
one <em>column</em>. If you want the data frame below, you’ll need to
turn each vector into a data frame with one <em>row</em> (that way
<code>map_dfr()</code> can stack the rows on top of one another).</p>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":["Jan"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["Feb"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["Mar"],"name":[3],"type":["dbl"],"align":["right"]},{"label":["Apr"],"name":[4],"type":["dbl"],"align":["right"]},{"label":["May"],"name":[5],"type":["dbl"],"align":["right"]},{"label":["Jun"],"name":[6],"type":["dbl"],"align":["right"]},{"label":["Jul"],"name":[7],"type":["dbl"],"align":["right"]},{"label":["Aug"],"name":[8],"type":["dbl"],"align":["right"]},{"label":["Sep"],"name":[9],"type":["dbl"],"align":["right"]},{"label":["Oct"],"name":[10],"type":["dbl"],"align":["right"]},{"label":["Nov"],"name":[11],"type":["dbl"],"align":["right"]},{"label":["Dec"],"name":[12],"type":["dbl"],"align":["right"]}],"data":[{"1":"3035","2":"2552","3":"2704","4":"2554","5":"2014","6":"1655","7":"1721","8":"1524","9":"1596","10":"2074","11":"2199","12":"2512"},{"1":"2933","2":"2889","3":"2938","4":"2497","5":"1870","6":"1726","7":"1607","8":"1545","9":"1396","10":"1787","11":"2076","12":"2837"},{"1":"2787","2":"3891","3":"3179","4":"2011","5":"1636","6":"1580","7":"1489","8":"1300","9":"1356","10":"1653","11":"2013","12":"2823"},{"1":"3102","2":"2294","3":"2385","4":"2444","5":"1748","6":"1554","7":"1498","8":"1361","9":"1346","10":"1564","11":"1640","12":"2293"},{"1":"2815","2":"3137","3":"2679","4":"1969","5":"1870","6":"1633","7":"1529","8":"1366","9":"1357","10":"1570","11":"1535","12":"2491"},{"1":"3084","2":"2605","3":"2573","4":"2143","5":"1693","6":"1504","7":"1461","8":"1354","9":"1333","10":"1492","11":"1781","12":"1915"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
  </script>
</div>
<p>If you try running <code>map_dfr()</code> on our current output, it
will stack your columns on top of one another to make a data frame with
one long column. Go ahead, try it.</p>
<ul>
<li>Click Submit Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="fail" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<pre class="text"><code>ldeaths %&gt;% 
  map_dfr(as_tibble)</code></pre>
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="fail-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>ldeaths %&gt;% 
  map_dfr(as_tibble)</code></pre>
</div>
</div>
<div id="section-how-can-you-fix-this" class="section level3">
<h3>How can you fix this?</h3>
<p>Even though R displays simple vectors as if they were <em>row
vectors</em>, R thinks of every vector as a <em>column vector</em>, even
if that vector has names. So why display the vector as a row vector? To
save screen space.</p>
<pre class="r"><code>ldeaths[[1]]</code></pre>
<pre><code>##  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec 
## 3035 2552 2704 2554 2014 1655 1721 1524 1596 2074 2199 2512</code></pre>
<p>You can get the data frames you want if you first transpose the
column vectors in <code>ldeaths</code> to row vectors.</p>
</div>
<div id="section-t" class="section level3">
<h3>t()</h3>
<p>R’s <code>t()</code> function does just that.</p>
<pre class="r"><code>ldeaths[[1]]</code></pre>
<pre><code>##  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec 
## 3035 2552 2704 2554 2014 1655 1721 1524 1596 2074 2199 2512</code></pre>
<pre class="r"><code>t(ldeaths[[1]])</code></pre>
<pre><code>##       Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
## [1,] 3035 2552 2704 2554 2014 1655 1721 1524 1596 2074 2199 2512</code></pre>
<p>Don’t be fooled by the way R displays the vectors. R only thinks of
the second vector as a row vector. You can tell by the bracket notation
in front of the vector. It indicates that this is the first <em>row</em>
of the result (but you can ignore the notation if it doesn’t interest
you).</p>
</div>
<div id="section-a-data-set" class="section level3">
<h3>A data set</h3>
<p>Now you can finish Step 1.</p>
<ol style="list-style-type: decimal">
<li>Use <code>map()</code> to apply <code>t()</code> to each vector in
<code>ldeaths</code>.</li>
<li>Use <code>map_dfr()</code> to map <code>as_tibble()</code> over the
transposed results. <code>map_dfr()</code> will combine the output into
a single data frame.</li>
<li>Click Submit Answer</li>
</ol>
<div class="tutorial-exercise" data-label="t" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="t-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>ldeaths %&gt;% 
  map(t) %&gt;% 
  map_dfr(as_tibble)</code></pre>
</div>
</div>
<div id="section-step-2---summarise" class="section level3">
<h3>Step 2 - summarise()</h3>
<p>How would you extend this code with <code>summarise()</code> from the
dplyr package to compute the monthly totals?</p>
<p><em>(You may need to take the Work with Data Primer to understand
these final three sections.)</em></p>
<pre class="r"><code>ldeaths %&gt;% 
  map(t) %&gt;% 
  map_dfr(as_tibble)</code></pre>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":["Jan"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["Feb"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["Mar"],"name":[3],"type":["dbl"],"align":["right"]},{"label":["Apr"],"name":[4],"type":["dbl"],"align":["right"]},{"label":["May"],"name":[5],"type":["dbl"],"align":["right"]},{"label":["Jun"],"name":[6],"type":["dbl"],"align":["right"]},{"label":["Jul"],"name":[7],"type":["dbl"],"align":["right"]},{"label":["Aug"],"name":[8],"type":["dbl"],"align":["right"]},{"label":["Sep"],"name":[9],"type":["dbl"],"align":["right"]},{"label":["Oct"],"name":[10],"type":["dbl"],"align":["right"]},{"label":["Nov"],"name":[11],"type":["dbl"],"align":["right"]},{"label":["Dec"],"name":[12],"type":["dbl"],"align":["right"]}],"data":[{"1":"3035","2":"2552","3":"2704","4":"2554","5":"2014","6":"1655","7":"1721","8":"1524","9":"1596","10":"2074","11":"2199","12":"2512"},{"1":"2933","2":"2889","3":"2938","4":"2497","5":"1870","6":"1726","7":"1607","8":"1545","9":"1396","10":"1787","11":"2076","12":"2837"},{"1":"2787","2":"3891","3":"3179","4":"2011","5":"1636","6":"1580","7":"1489","8":"1300","9":"1356","10":"1653","11":"2013","12":"2823"},{"1":"3102","2":"2294","3":"2385","4":"2444","5":"1748","6":"1554","7":"1498","8":"1361","9":"1346","10":"1564","11":"1640","12":"2293"},{"1":"2815","2":"3137","3":"2679","4":"1969","5":"1870","6":"1633","7":"1529","8":"1366","9":"1357","10":"1570","11":"1535","12":"2491"},{"1":"3084","2":"2605","3":"2573","4":"2143","5":"1693","6":"1504","7":"1461","8":"1354","9":"1333","10":"1492","11":"1781","12":"1915"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
  </script>
</div>
</div>
<div id="section-section-12" class="section level3">
<h3></h3>
<p>Here’s a surefire way to do it, but it requires a lot of typing; I’m
summarising every column in the data frame. Let’s use a shortcut
instead.</p>
<pre class="r"><code>ldeaths %&gt;% 
  map(t) %&gt;% 
  map_dfr(as_tibble) %&gt;% 
  summarise(Jan = sum(Jan), 
            Feb = sum(Feb),
            Mar = sum(Mar),
            Apr = sum(Apr),
            May = sum(May),
            Jun = sum(Jun), 
            Jul = sum(Jul),
            Aug = sum(Aug),
            Sep = sum(Sep),
            Oct = sum(Oct),
            Nov = sum(Nov),
            Dec = sum(Dec))</code></pre>
</div>
<div id="section-summarise_all" class="section level3">
<h3>summarise_all()</h3>
<p>dplyr contains a variant of <code>summarise()</code> named
<code>summarise_all()</code>. To use <code>summarise_all()</code> give
it a data frame and then one or more functions to apply to each column
in the data frame. <code>summarise_all()</code> will apply each function
to every column and return the results as a summary table.</p>
<ul>
<li>Use <code>summarise_all()</code> and the code below to sum across
months. Look at the hints if you get stuck. Then click Submit
Answer.</li>
</ul>
<div class="tutorial-exercise" data-label="all" data-completion="1"
data-diagnostics="1" data-startover="1" data-lines="0">
<pre class="text"><code>ldeaths %&gt;% 
  map(t) %&gt;% 
  map_dfr(as_tibble)</code></pre>
<script type="application/json" data-ui-opts="1">{"engine":"r","has_checker":true,"caption":"<span data-i18n=\"text.enginecap\" data-i18n-opts=\"{&quot;engine&quot;:&quot;R&quot;}\">R Code<\/span>"}</script>
</div>
<div class="tutorial-exercise-support" data-label="all-hint"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>&quot;You do not need to pass summarise_all() a data frame; it will inherit one from the pipe.&quot;</code></pre>
</div>
<div class="tutorial-exercise-support" data-label="all-solution"
data-completion="1" data-diagnostics="1" data-startover="1"
data-lines="0">
<pre class="text"><code>ldeaths %&gt;% 
  map(t) %&gt;% 
  map_dfr(as_tibble) %&gt;% 
  summarise_all(sum)</code></pre>
</div>
</div>
<div id="section-the-end" class="section level3">
<h3>The End</h3>
<p>Congratulations on making it to the end. You’ve learned the ins and
outs of iterating with <code>map()</code>, but there is more to
know.</p>
<p>When you are ready, the next tutorial will show you how to save a lot
of time with <code>map()</code>’s syntax shortcuts. It will also show
you what to do when you cannot find a function to map that does what you
want. 
<script type="application/shiny-prerendered" data-context="server-start">
library(learnr)
library(tidyverse)
library(stringr)

ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),
                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),
                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),
                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),
                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),
                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))
                

checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {
  list(message = check_code, correct = TRUE, location = "append")
}
tutorial_options(exercise.timelimit = 60, exercise.checker = checker)
knitr::opts_chunk$set(error = TRUE, out.width = "100%")
</script>
 
<script type="application/shiny-prerendered" data-context="server">
learnr:::register_http_handlers(session, metadata = list(id = "com.rstudio.primers.map", version = 1))
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::prepare_tutorial_state(session)
</script>
 
<script type="application/shiny-prerendered" data-context="server">
learnr:::i18n_observe_tutorial_language(input, session)
</script>


<script type="application/shiny-prerendered" data-context="server">
session$onSessionEnded(function() {
        learnr:::event_trigger(session, "session_stop")
      })
</script>
 
<script type="application/shiny-prerendered" data-context="server-start">
# Capture metrics only if running an official primer hosted by RStudio
library(curl)
library(later)
tryCatch(
  source("https://metrics.rstudioprimers.com/learnr/installMetrics", local=TRUE), 
  error = function(e){ 
    print("Warning: An error occurred with the tracking code.")
  }
)
</script>


<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-purrr-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-purrr-code-editor`)), session)
output$`tutorial-exercise-purrr-output` <- renderUI({
  `tutorial-exercise-purrr-result`()
})
</script>
 
<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "purrr", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "purrr", code = "", 
        opts = list(label = "\"purrr\"", exercise = "TRUE"), 
        engine = "r")), code_check = NULL, error_check = NULL, 
    check = structure("'Purrr-fect. Now you can use purrr functions. You can also install and load the purrr package by itself, without the other tidyverse packages. To do so, use install.packages(\"purrr\") and library(purrr).'", chunk_opts = list(
        label = "purrr-check")), solution = structure("library(tidyverse)", chunk_opts = list(
        label = "purrr-solution")), tests = NULL, options = list(
        eval = FALSE, echo = TRUE, results = "markup", tidy = FALSE, 
        tidy.opts = NULL, collapse = FALSE, prompt = FALSE, comment = NA, 
        highlight = FALSE, size = "normalsize", background = "#F7F7F7", 
        strip.white = TRUE, cache = 0, cache.path = "tidying_cache/html/", 
        cache.vars = NULL, cache.lazy = TRUE, dependson = NULL, 
        autodep = FALSE, cache.rebuild = FALSE, fig.keep = "high", 
        fig.show = "asis", fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "purrr", exercise = TRUE, code = "", out.width.px = "100%", 
        out.height.px = 384, params.src = "purrr, exercise = TRUE", 
        fig.num = 0L, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>


<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-map1-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-map1-code-editor`)), session)
output$`tutorial-exercise-map1-output` <- renderUI({
  `tutorial-exercise-map1-result`()
})
</script>
 
<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "map1", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = "list1 <- list(1, 2, 3, 4, 5)", chunks = list(list(
        label = "map1-setup", code = "list1 <- list(1, 2, 3, 4, 5)", 
        opts = list(label = "\"map1-setup\""), engine = "r"), 
        list(label = "map1", code = "", opts = list(label = "\"map1\"", 
            exercise = "TRUE", exercise.eval = "TRUE"), engine = "r")), 
    code_check = NULL, error_check = NULL, check = structure("\"Excellent. You can use map() with any function to iterate over the elements of a vector. map() will return the results in a list, which means that map() can handle whatever output your function creates. Why? Because you can put anything in a list.\"", chunk_opts = list(
        label = "map1-check")), solution = structure("map(list1, log)", chunk_opts = list(
        label = "map1-solution")), tests = NULL, options = list(
        eval = TRUE, echo = TRUE, results = "markup", tidy = FALSE, 
        tidy.opts = NULL, collapse = FALSE, prompt = FALSE, comment = NA, 
        highlight = FALSE, size = "normalsize", background = "#F7F7F7", 
        strip.white = TRUE, cache = 0, cache.path = "tidying_cache/html/", 
        cache.vars = NULL, cache.lazy = TRUE, dependson = NULL, 
        autodep = FALSE, cache.rebuild = FALSE, fig.keep = "high", 
        fig.show = "asis", fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "map1", exercise = TRUE, exercise.eval = TRUE, 
        code = "", out.width.px = "100%", out.height.px = 384, 
        params.src = "map1, exercise = TRUE, exercise.eval = TRUE", 
        fig.alt = NULL, fig.num = 0L, exercise.df_print = "paged"), 
    engine = "r", version = "4"), class = c("r", "tutorial_exercise"
)))
</script>


<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-map3-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-map3-code-editor`)), session)
output$`tutorial-exercise-map3-output` <- renderUI({
  `tutorial-exercise-map3-result`()
})
</script>
 
<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "map3", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "map3", code = "", 
        opts = list(label = "\"map3\"", exercise = "TRUE"), engine = "r")), 
    code_check = NULL, error_check = NULL, check = NULL, solution = NULL, 
    tests = NULL, options = list(eval = FALSE, echo = TRUE, results = "markup", 
        tidy = FALSE, tidy.opts = NULL, collapse = FALSE, prompt = FALSE, 
        comment = NA, highlight = FALSE, size = "normalsize", 
        background = "#F7F7F7", strip.white = TRUE, cache = 0, 
        cache.path = "tidying_cache/html/", cache.vars = NULL, 
        cache.lazy = TRUE, dependson = NULL, autodep = FALSE, 
        cache.rebuild = FALSE, fig.keep = "high", fig.show = "asis", 
        fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "map3", exercise = TRUE, code = "", out.width.px = "100%", 
        out.height.px = 384, params.src = "map3, exercise = TRUE", 
        fig.num = 0L, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::question_prerendered_chunk(structure(list(type = "learnr_radio", label = "q1-1", question = structure("What does <code>log<\u002fcode> return?", html = TRUE, class = c("html", 
"character")), answers = list(structure(list(id = "lnr_ans_d5df207", 
    option = "0", value = "0", label = structure("0", html = TRUE, class = c("html", 
    "character")), correct = FALSE, message = NULL, type = "literal"), class = c("tutorial_question_answer", 
"tutorial_quiz_answer")), structure(list(id = "lnr_ans_d97725c", 
    option = "An error", value = "An error", label = structure("An error", html = TRUE, class = c("html", 
    "character")), correct = FALSE, message = NULL, type = "literal"), class = c("tutorial_question_answer", 
"tutorial_quiz_answer")), structure(list(id = "lnr_ans_6291605", 
    option = "The function saved in the object named `log`", 
    value = "The function saved in the object named `log`", label = structure("The function saved in the object named <code>log<\u002fcode>", html = TRUE, class = c("html", 
    "character")), correct = TRUE, message = structure("log is just an object that happens to contain a function. This is true for the names of all R functions. You can return the function without running it by calling the name of the function without parentheses behind it.", html = TRUE, class = c("html", 
    "character")), type = "literal"), class = c("tutorial_question_answer", 
"tutorial_quiz_answer"))), button_labels = list(submit = structure("<span data-i18n=\"button.questionsubmit\">Submit Answer<\u002fspan>", html = TRUE, class = c("html", 
"character")), try_again = structure("<span data-i18n=\"button.questiontryagain\">Try Again<\u002fspan>", html = TRUE, class = c("html", 
"character"))), messages = list(correct = structure("Correct!", html = TRUE, class = c("html", 
"character")), try_again = structure("Incorrect", html = TRUE, class = c("html", 
"character")), incorrect = structure("Incorrect", html = TRUE, class = c("html", 
"character")), message = NULL, post_message = NULL), ids = list(
    answer = "q1-1-answer", question = "q1-1"), loading = NULL, 
    random_answer_order = FALSE, allow_retry = TRUE, seed = 190770054.411166, 
    options = list()), class = c("learnr_radio", "tutorial_question"
)), session = session)
</script>
 
<script type="application/shiny-prerendered" data-context="server">
learnr:::question_prerendered_chunk(structure(list(type = "learnr_radio", label = "q1-2", question = structure("What does <code>log()<\u002fcode> return?", html = TRUE, class = c("html", 
"character")), answers = list(structure(list(id = "lnr_ans_96c2719", 
    option = "0", value = "0", label = structure("0", html = TRUE, class = c("html", 
    "character")), correct = FALSE, message = NULL, type = "literal"), class = c("tutorial_question_answer", 
"tutorial_quiz_answer")), structure(list(id = "lnr_ans_a6846c5", 
    option = "An error", value = "An error", label = structure("An error", html = TRUE, class = c("html", 
    "character")), correct = TRUE, message = structure("Parentheses are the “go button” for R functions. When you place parentheses behind the name of an object that contains a function, R executes the function. Unfortunately, the log function requires an argument to do its job. We do not supply one here, so we get an error. To see the effect of parentheses more clearly, compare Sys.Date() to Sys.Date. The Sys.Date function does not require an argument.", html = TRUE, class = c("html", 
    "character")), type = "literal"), class = c("tutorial_question_answer", 
"tutorial_quiz_answer")), structure(list(id = "lnr_ans_3d4740e", 
    option = "The function saved in the object named `log`", 
    value = "The function saved in the object named `log`", label = structure("The function saved in the object named <code>log<\u002fcode>", html = TRUE, class = c("html", 
    "character")), correct = FALSE, message = NULL, type = "literal"), class = c("tutorial_question_answer", 
"tutorial_quiz_answer"))), button_labels = list(submit = structure("<span data-i18n=\"button.questionsubmit\">Submit Answer<\u002fspan>", html = TRUE, class = c("html", 
"character")), try_again = structure("<span data-i18n=\"button.questiontryagain\">Try Again<\u002fspan>", html = TRUE, class = c("html", 
"character"))), messages = list(correct = structure("Correct!", html = TRUE, class = c("html", 
"character")), try_again = structure("Incorrect", html = TRUE, class = c("html", 
"character")), incorrect = structure("Incorrect", html = TRUE, class = c("html", 
"character")), message = NULL, post_message = NULL), ids = list(
    answer = "q1-2-answer", question = "q1-2"), loading = NULL, 
    random_answer_order = FALSE, allow_retry = TRUE, seed = 1660768721.72664, 
    options = list()), class = c("learnr_radio", "tutorial_question"
)), session = session)
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::question_prerendered_chunk(structure(list(type = "learnr_radio", label = "q1-3", question = structure("What does <code>log(1)<\u002fcode> return?", html = TRUE, class = c("html", 
"character")), answers = list(structure(list(id = "lnr_ans_32b684f", 
    option = "0", value = "0", label = structure("0", html = TRUE, class = c("html", 
    "character")), correct = TRUE, message = structure("This is the result of running log on 1. The parentheses execute the function saved in log and pass the function the argument 1, which we supplied between the parentheses.", html = TRUE, class = c("html", 
    "character")), type = "literal"), class = c("tutorial_question_answer", 
"tutorial_quiz_answer")), structure(list(id = "lnr_ans_f79533c", 
    option = "An error", value = "An error", label = structure("An error", html = TRUE, class = c("html", 
    "character")), correct = FALSE, message = NULL, type = "literal"), class = c("tutorial_question_answer", 
"tutorial_quiz_answer")), structure(list(id = "lnr_ans_2e026f", 
    option = "The function saved in the object named `log`", 
    value = "The function saved in the object named `log`", label = structure("The function saved in the object named <code>log<\u002fcode>", html = TRUE, class = c("html", 
    "character")), correct = FALSE, message = NULL, type = "literal"), class = c("tutorial_question_answer", 
"tutorial_quiz_answer"))), button_labels = list(submit = structure("<span data-i18n=\"button.questionsubmit\">Submit Answer<\u002fspan>", html = TRUE, class = c("html", 
"character")), try_again = structure("<span data-i18n=\"button.questiontryagain\">Try Again<\u002fspan>", html = TRUE, class = c("html", 
"character"))), messages = list(correct = structure("Correct!", html = TRUE, class = c("html", 
"character")), try_again = structure("Incorrect", html = TRUE, class = c("html", 
"character")), incorrect = structure("Incorrect", html = TRUE, class = c("html", 
"character")), message = NULL, post_message = NULL), ids = list(
    answer = "q1-3-answer", question = "q1-3"), loading = NULL, 
    random_answer_order = FALSE, allow_retry = TRUE, seed = 1942083667.09565, 
    options = list()), class = c("learnr_radio", "tutorial_question"
)), session = session)
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-map2-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-map2-code-editor`)), session)
output$`tutorial-exercise-map2-output` <- renderUI({
  `tutorial-exercise-map2-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "map2", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = "list1 <- list(1, 2, 3, 4, 5)", chunks = list(list(
        label = "map2-setup", code = "list1 <- list(1, 2, 3, 4, 5)", 
        opts = list(label = "\"map2-setup\""), engine = "r"), 
        list(label = "map2", code = "list1 %>% \n  map(log) %>% \n  map(round)", 
            opts = list(label = "\"map2\"", exercise = "TRUE"), 
            engine = "r")), code_check = NULL, error_check = NULL, 
    check = structure("\"The code first took the log of each element with log(). It then rounded each answer to the nearest integer with round().\"", chunk_opts = list(
        label = "map2-check")), solution = NULL, tests = NULL, 
    options = list(eval = FALSE, echo = TRUE, results = "markup", 
        tidy = FALSE, tidy.opts = NULL, collapse = FALSE, prompt = FALSE, 
        comment = NA, highlight = FALSE, size = "normalsize", 
        background = "#F7F7F7", strip.white = TRUE, cache = 0, 
        cache.path = "tidying_cache/html/", cache.vars = NULL, 
        cache.lazy = TRUE, dependson = NULL, autodep = FALSE, 
        cache.rebuild = FALSE, fig.keep = "high", fig.show = "asis", 
        fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "map2", exercise = TRUE, code = c("list1 %>% ", 
        "  map(log) %>% ", "  map(round)"), out.width.px = "100%", 
        out.height.px = 384, params.src = "map2, exercise = TRUE", 
        fig.num = 0, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-map4-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-map4-code-editor`)), session)
output$`tutorial-exercise-map4-output` <- renderUI({
  `tutorial-exercise-map4-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "map4", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = "list1 <- list(1, 2, 3, 4, 5)", chunks = list(list(
        label = "map4-setup", code = "list1 <- list(1, 2, 3, 4, 5)", 
        opts = list(label = "\"map4-setup\""), engine = "r"), 
        list(label = "map4", code = "", opts = list(label = "\"map4\"", 
            exercise = "TRUE"), engine = "r")), code_check = NULL, 
    error_check = NULL, check = structure("\"Good job. You can pass as many arguments as you like through map(), be sure to separate each with a comma, e.g. map(list1, rnorm, mean = 1, sd = 2).\"", chunk_opts = list(
        label = "map4-check")), solution = structure("map(list1, log, base = 2)", chunk_opts = list(
        label = "map4-solution")), tests = NULL, options = list(
        eval = FALSE, echo = TRUE, results = "markup", tidy = FALSE, 
        tidy.opts = NULL, collapse = FALSE, prompt = FALSE, comment = NA, 
        highlight = FALSE, size = "normalsize", background = "#F7F7F7", 
        strip.white = TRUE, cache = 0, cache.path = "tidying_cache/html/", 
        cache.vars = NULL, cache.lazy = TRUE, dependson = NULL, 
        autodep = FALSE, cache.rebuild = FALSE, fig.keep = "high", 
        fig.show = "asis", fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "map4", exercise = TRUE, code = "", out.width.px = "100%", 
        out.height.px = 384, params.src = "map4, exercise = TRUE", 
        fig.num = 0L, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-map_dbl-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-map_dbl-code-editor`)), session)
output$`tutorial-exercise-map_dbl-output` <- renderUI({
  `tutorial-exercise-map_dbl-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "map_dbl", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = "list1 <- list(1, 2, 3, 4, 5)", chunks = list(list(
        label = "map_dbl-setup", code = "list1 <- list(1, 2, 3, 4, 5)", 
        opts = list(label = "\"map_dbl-setup\""), engine = "r"), 
        list(label = "map_dbl", code = "map(list1, log)", opts = list(
            label = "\"map_dbl\"", exercise = "TRUE"), engine = "r")), 
    code_check = NULL, error_check = NULL, check = structure("\"Good job. Now your results come back as a numeric vector. This is useful. For example, you could pass the results directly to round() without using another call to map(): list1 %>% map_dbl(log) %>% round().\"", chunk_opts = list(
        label = "map_dbl-check")), solution = structure("map_dbl(list1, log)", chunk_opts = list(
        label = "map_dbl-solution")), tests = NULL, options = list(
        eval = FALSE, echo = TRUE, results = "markup", tidy = FALSE, 
        tidy.opts = NULL, collapse = FALSE, prompt = FALSE, comment = NA, 
        highlight = FALSE, size = "normalsize", background = "#F7F7F7", 
        strip.white = TRUE, cache = 0, cache.path = "tidying_cache/html/", 
        cache.vars = NULL, cache.lazy = TRUE, dependson = NULL, 
        autodep = FALSE, cache.rebuild = FALSE, fig.keep = "high", 
        fig.show = "asis", fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "map_dbl", exercise = TRUE, code = "map(list1, log)", 
        out.width.px = "100%", out.height.px = 384, params.src = "map_dbl, exercise = TRUE", 
        fig.num = 0, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-map_dbl2-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-map_dbl2-code-editor`)), session)
output$`tutorial-exercise-map_dbl2-output` <- renderUI({
  `tutorial-exercise-map_dbl2-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "map_dbl2", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "map_dbl2", code = "library(stringr)\nstrings <- list(\"Mary\", \"John\", \"Jill\")\nmap_dbl(strings, str_sub, start = 1, end = 1)", 
        opts = list(label = "\"map_dbl2\"", exercise = "TRUE"), 
        engine = "r")), code_check = NULL, error_check = NULL, 
    check = NULL, solution = NULL, tests = NULL, options = list(
        eval = FALSE, echo = TRUE, results = "markup", tidy = FALSE, 
        tidy.opts = NULL, collapse = FALSE, prompt = FALSE, comment = NA, 
        highlight = FALSE, size = "normalsize", background = "#F7F7F7", 
        strip.white = TRUE, cache = 0, cache.path = "tidying_cache/html/", 
        cache.vars = NULL, cache.lazy = TRUE, dependson = NULL, 
        autodep = FALSE, cache.rebuild = FALSE, fig.keep = "high", 
        fig.show = "asis", fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "map_dbl2", exercise = TRUE, code = c("library(stringr)", 
        "strings <- list(\"Mary\", \"John\", \"Jill\")", "map_dbl(strings, str_sub, start = 1, end = 1)"
        ), out.width.px = "100%", out.height.px = 384, params.src = "map_dbl2, exercise = TRUE", 
        fig.num = 0, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-map_chr-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-map_chr-code-editor`)), session)
output$`tutorial-exercise-map_chr-output` <- renderUI({
  `tutorial-exercise-map_chr-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "map_chr", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "map_chr", code = "strings <- list(\"Mary\", \"John\", \"Jill\")\n\nmap_dbl(strings, str_sub, start = 1, end = 1)", 
        opts = list(label = "\"map_chr\"", exercise = "TRUE"), 
        engine = "r")), code_check = NULL, error_check = NULL, 
    check = structure("\"Great job. Now let's cement our knowledge of `map()` by using it to solve a data wrangling challenge.\"", chunk_opts = list(
        label = "map_chr-check")), solution = structure(c("strings <- list(\"Mary\", \"John\", \"Jill\")", 
    "", "map_chr(strings, str_sub, start = 1, end = 1)"), chunk_opts = list(
        label = "map_chr-solution")), tests = NULL, options = list(
        eval = FALSE, echo = TRUE, results = "markup", tidy = FALSE, 
        tidy.opts = NULL, collapse = FALSE, prompt = FALSE, comment = NA, 
        highlight = FALSE, size = "normalsize", background = "#F7F7F7", 
        strip.white = TRUE, cache = 0, cache.path = "tidying_cache/html/", 
        cache.vars = NULL, cache.lazy = TRUE, dependson = NULL, 
        autodep = FALSE, cache.rebuild = FALSE, fig.keep = "high", 
        fig.show = "asis", fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "map_chr", exercise = TRUE, code = c("strings <- list(\"Mary\", \"John\", \"Jill\")", 
        "", "map_dbl(strings, str_sub, start = 1, end = 1)"), 
        out.width.px = "100%", out.height.px = 384, params.src = "map_chr, exercise = TRUE", 
        fig.num = 0, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-ldeaths-1-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-ldeaths-1-code-editor`)), session)
output$`tutorial-exercise-ldeaths-1-output` <- renderUI({
  `tutorial-exercise-ldeaths-1-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "ldeaths-1", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "ldeaths-1", code = "ldeaths", 
        opts = list(label = "\"ldeaths-1\"", exercise = "TRUE"), 
        engine = "r")), code_check = NULL, error_check = NULL, 
    check = structure("\"This is the data you will explore. ldeaths is a reformatted version of the ldeaths time series that comes in base R.\"", chunk_opts = list(
        label = "ldeaths-1-check")), solution = NULL, tests = NULL, 
    options = list(eval = FALSE, echo = TRUE, results = "markup", 
        tidy = FALSE, tidy.opts = NULL, collapse = FALSE, prompt = FALSE, 
        comment = NA, highlight = FALSE, size = "normalsize", 
        background = "#F7F7F7", strip.white = TRUE, cache = 0, 
        cache.path = "tidying_cache/html/", cache.vars = NULL, 
        cache.lazy = TRUE, dependson = NULL, autodep = FALSE, 
        cache.rebuild = FALSE, fig.keep = "high", fig.show = "asis", 
        fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "ldeaths-1", exercise = TRUE, code = "ldeaths", 
        out.width.px = "100%", out.height.px = 384, params.src = "ldeaths-1, exercise = TRUE", 
        fig.num = 0, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-ldeaths-sum-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-ldeaths-sum-code-editor`)), session)
output$`tutorial-exercise-ldeaths-sum-output` <- renderUI({
  `tutorial-exercise-ldeaths-sum-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "ldeaths-sum", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "ldeaths-sum", code = "", 
        opts = list(label = "\"ldeaths-sum\"", exercise = "TRUE"), 
        engine = "r")), code_check = NULL, error_check = NULL, 
    check = structure("\"Good job. It looks like deaths went down over time (slightly). Did you use map() or map_dbl()? Both will work, but map_dbl() will return your results in a format that is easier to inspect and use.\"", chunk_opts = list(
        label = "ldeaths-sum-check")), solution = structure("map_dbl(ldeaths, sum)", chunk_opts = list(
        label = "ldeaths-sum-solution")), tests = NULL, options = list(
        eval = FALSE, echo = TRUE, results = "markup", tidy = FALSE, 
        tidy.opts = NULL, collapse = FALSE, prompt = FALSE, comment = NA, 
        highlight = FALSE, size = "normalsize", background = "#F7F7F7", 
        strip.white = TRUE, cache = 0, cache.path = "tidying_cache/html/", 
        cache.vars = NULL, cache.lazy = TRUE, dependson = NULL, 
        autodep = FALSE, cache.rebuild = FALSE, fig.keep = "high", 
        fig.show = "asis", fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "ldeaths-sum", exercise = TRUE, code = "", out.width.px = "100%", 
        out.height.px = 384, params.src = "ldeaths-sum, exercise = TRUE", 
        fig.num = 0L, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-ldeaths-total-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-ldeaths-total-code-editor`)), session)
output$`tutorial-exercise-ldeaths-total-output` <- renderUI({
  `tutorial-exercise-ldeaths-total-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "ldeaths-total", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "ldeaths-total", 
        code = "", opts = list(label = "\"ldeaths-total\"", exercise = "TRUE"), 
        engine = "r")), code_check = NULL, error_check = NULL, 
    check = structure("\"Good work. First, you summed each vector. Then, you summed the results. It is easiest to sum the results if you use map_dbl() to sum the vectors.\"", chunk_opts = list(
        label = "ldeaths-total-check")), solution = structure("sum(map_dbl(ldeaths, sum))", chunk_opts = list(
        label = "ldeaths-total-solution")), tests = NULL, options = list(
        eval = FALSE, echo = TRUE, results = "markup", tidy = FALSE, 
        tidy.opts = NULL, collapse = FALSE, prompt = FALSE, comment = NA, 
        highlight = FALSE, size = "normalsize", background = "#F7F7F7", 
        strip.white = TRUE, cache = 0, cache.path = "tidying_cache/html/", 
        cache.vars = NULL, cache.lazy = TRUE, dependson = NULL, 
        autodep = FALSE, cache.rebuild = FALSE, fig.keep = "high", 
        fig.show = "asis", fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "ldeaths-total", exercise = TRUE, code = "", 
        out.width.px = "100%", out.height.px = 384, params.src = "ldeaths-total, exercise = TRUE", 
        fig.num = 0L, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-ldeaths-pipe-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-ldeaths-pipe-code-editor`)), session)
output$`tutorial-exercise-ldeaths-pipe-output` <- renderUI({
  `tutorial-exercise-ldeaths-pipe-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "ldeaths-pipe", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "ldeaths-pipe", 
        code = "sum(map_dbl(ldeaths, sum))", opts = list(label = "\"ldeaths-pipe\"", 
            exercise = "TRUE"), engine = "r")), code_check = NULL, 
    error_check = NULL, check = structure("\"Use pipes for the rest of this case study. Pipes make it easy to build on previous work and to transform your data one step at a time. I can't recommend pipes enough.\"", chunk_opts = list(
        label = "ldeaths-pipe-check")), solution = structure(c("ldeaths %>% ", 
    "  map_dbl(sum) %>%", "  sum()"), chunk_opts = list(label = "ldeaths-pipe-solution")), 
    tests = NULL, options = list(eval = FALSE, echo = TRUE, results = "markup", 
        tidy = FALSE, tidy.opts = NULL, collapse = FALSE, prompt = FALSE, 
        comment = NA, highlight = FALSE, size = "normalsize", 
        background = "#F7F7F7", strip.white = TRUE, cache = 0, 
        cache.path = "tidying_cache/html/", cache.vars = NULL, 
        cache.lazy = TRUE, dependson = NULL, autodep = FALSE, 
        cache.rebuild = FALSE, fig.keep = "high", fig.show = "asis", 
        fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "ldeaths-pipe", exercise = TRUE, code = "sum(map_dbl(ldeaths, sum))", 
        out.width.px = "100%", out.height.px = 384, params.src = "ldeaths-pipe, exercise = TRUE", 
        fig.num = 0, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-as_tibble-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-as_tibble-code-editor`)), session)
output$`tutorial-exercise-as_tibble-output` <- renderUI({
  `tutorial-exercise-as_tibble-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "as_tibble", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "as_tibble", code = "named_vec <- c(uno = 1, dos = 2, tres = 3)\nnamed_vec", 
        opts = list(label = "\"as_tibble\"", exercise = "TRUE"), 
        engine = "r")), code_check = NULL, error_check = NULL, 
    check = structure("\"Good job. as_tibble() comes in the tibble package, as do as_data_frame() and data_frame(). Like purrr, the tibble package is a member of the tidyverse.\"", chunk_opts = list(
        label = "as_tibble-check")), solution = structure(c("named_vec <- c(uno = 1, dos = 2, tres = 3)", 
    "as_tibble(named_vec)"), chunk_opts = list(label = "as_tibble-solution")), 
    tests = NULL, options = list(eval = FALSE, echo = TRUE, results = "markup", 
        tidy = FALSE, tidy.opts = NULL, collapse = FALSE, prompt = FALSE, 
        comment = NA, highlight = FALSE, size = "normalsize", 
        background = "#F7F7F7", strip.white = TRUE, cache = 0, 
        cache.path = "tidying_cache/html/", cache.vars = NULL, 
        cache.lazy = TRUE, dependson = NULL, autodep = FALSE, 
        cache.rebuild = FALSE, fig.keep = "high", fig.show = "asis", 
        fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "as_tibble", exercise = TRUE, code = c("named_vec <- c(uno = 1, dos = 2, tres = 3)", 
        "named_vec"), out.width.px = "100%", out.height.px = 384, 
        params.src = "as_tibble, exercise = TRUE", fig.num = 0, 
        exercise.df_print = "paged"), engine = "r", version = "4"), class = c("r", 
"tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-as_tibble-2-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-as_tibble-2-code-editor`)), session)
output$`tutorial-exercise-as_tibble-2-output` <- renderUI({
  `tutorial-exercise-as_tibble-2-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "as_tibble-2", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "as_tibble-2", code = "", 
        opts = list(label = "\"as_tibble-2\"", exercise = "TRUE"), 
        engine = "r")), code_check = NULL, error_check = NULL, 
    check = structure("\"Good job, you made each vector a tibble (i.e. a data frame)! But there is something funny happening here. Let's investigate.\"", chunk_opts = list(
        label = "as_tibble-2-check")), solution = structure(c("ldeaths %>% ", 
    "  map(as_tibble)"), chunk_opts = list(label = "as_tibble-2-solution")), 
    tests = NULL, options = list(eval = FALSE, echo = TRUE, results = "markup", 
        tidy = FALSE, tidy.opts = NULL, collapse = FALSE, prompt = FALSE, 
        comment = NA, highlight = FALSE, size = "normalsize", 
        background = "#F7F7F7", strip.white = TRUE, cache = 0, 
        cache.path = "tidying_cache/html/", cache.vars = NULL, 
        cache.lazy = TRUE, dependson = NULL, autodep = FALSE, 
        cache.rebuild = FALSE, fig.keep = "high", fig.show = "asis", 
        fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "as_tibble-2", exercise = TRUE, code = "", out.width.px = "100%", 
        out.height.px = 384, params.src = "as_tibble-2, exercise = TRUE", 
        fig.num = 0L, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-fail-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-fail-code-editor`)), session)
output$`tutorial-exercise-fail-output` <- renderUI({
  `tutorial-exercise-fail-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "fail", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "fail", code = "ldeaths %>% \n  map_dfr(as_tibble)", 
        opts = list(label = "\"fail\"", exercise = "TRUE"), engine = "r")), 
    code_check = NULL, error_check = NULL, check = structure("\"That's not what you want.\"", chunk_opts = list(
        label = "fail-check")), solution = structure(c("ldeaths %>% ", 
    "  map_dfr(as_tibble)"), chunk_opts = list(label = "fail-solution")), 
    tests = NULL, options = list(eval = FALSE, echo = TRUE, results = "markup", 
        tidy = FALSE, tidy.opts = NULL, collapse = FALSE, prompt = FALSE, 
        comment = NA, highlight = FALSE, size = "normalsize", 
        background = "#F7F7F7", strip.white = TRUE, cache = 0, 
        cache.path = "tidying_cache/html/", cache.vars = NULL, 
        cache.lazy = TRUE, dependson = NULL, autodep = FALSE, 
        cache.rebuild = FALSE, fig.keep = "high", fig.show = "asis", 
        fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "fail", exercise = TRUE, code = c("ldeaths %>% ", 
        "  map_dfr(as_tibble)"), out.width.px = "100%", out.height.px = 384, 
        params.src = "fail, exercise = TRUE", fig.num = 0, exercise.df_print = "paged"), 
    engine = "r", version = "4"), class = c("r", "tutorial_exercise"
)))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-t-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-t-code-editor`)), session)
output$`tutorial-exercise-t-output` <- renderUI({
  `tutorial-exercise-t-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "t", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "t", code = "", 
        opts = list(label = "\"t\"", exercise = "TRUE"), engine = "r")), 
    code_check = NULL, error_check = NULL, check = structure("\"Excellent. Now you can finish.\"", chunk_opts = list(
        label = "t-check")), solution = structure(c("ldeaths %>% ", 
    "  map(t) %>% ", "  map_dfr(as_tibble)"), chunk_opts = list(
        label = "t-solution")), tests = NULL, options = list(
        eval = FALSE, echo = TRUE, results = "markup", tidy = FALSE, 
        tidy.opts = NULL, collapse = FALSE, prompt = FALSE, comment = NA, 
        highlight = FALSE, size = "normalsize", background = "#F7F7F7", 
        strip.white = TRUE, cache = 0, cache.path = "tidying_cache/html/", 
        cache.vars = NULL, cache.lazy = TRUE, dependson = NULL, 
        autodep = FALSE, cache.rebuild = FALSE, fig.keep = "high", 
        fig.show = "asis", fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "t", exercise = TRUE, code = "", out.width.px = "100%", 
        out.height.px = 384, params.src = "t, exercise = TRUE", 
        fig.num = 0L, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
 
<script type="application/shiny-prerendered" data-context="server">
`tutorial-exercise-all-result` <- learnr:::setup_exercise_handler(reactive(req(input$`tutorial-exercise-all-code-editor`)), session)
output$`tutorial-exercise-all-output` <- renderUI({
  `tutorial-exercise-all-result`()
})
</script>


<script type="application/shiny-prerendered" data-context="server">
learnr:::store_exercise_cache(structure(list(label = "all", global_setup = structure(c("library(learnr)", 
"library(tidyverse)", "library(stringr)", "", "ldeaths <- list(`1974` = c(Jan = 3035, Feb = 2552, Mar = 2704, Apr = 2554, May = 2014, Jun = 1655, Jul = 1721, Aug = 1524, Sep = 1596, Oct = 2074, Nov = 2199, Dec =  2512),", 
"                `1975` = c(Jan = 2933, Feb = 2889, Mar = 2938, Apr = 2497, May = 1870, Jun = 1726, Jul = 1607, Aug = 1545, Sep = 1396, Oct = 1787, Nov = 2076, Dec =  2837),", 
"                `1976` = c(Jan = 2787, Feb = 3891, Mar = 3179, Apr = 2011, May = 1636, Jun = 1580, Jul = 1489, Aug = 1300, Sep = 1356, Oct = 1653, Nov = 2013, Dec =  2823),", 
"                `1977` = c(Jan = 3102, Feb = 2294, Mar = 2385, Apr = 2444, May = 1748, Jun = 1554, Jul = 1498, Aug = 1361, Sep = 1346, Oct = 1564, Nov = 1640, Dec =  2293),", 
"                `1978` = c(Jan = 2815, Feb = 3137, Mar = 2679, Apr = 1969, May = 1870, Jun = 1633, Jul = 1529, Aug = 1366, Sep = 1357, Oct = 1570, Nov = 1535, Dec =  2491),", 
"                `1979` = c(Jan = 3084, Feb = 2605, Mar = 2573, Apr = 2143, May = 1693, Jun = 1504, Jul = 1461, Aug = 1354, Sep = 1333, Oct = 1492, Nov = 1781, Dec =  1915))", 
"                ", "", "checker <- function(label, user_code, check_code, envir_result, evaluate_result, ...) {", 
"  list(message = check_code, correct = TRUE, location = \"append\")", 
"}", "tutorial_options(exercise.timelimit = 60, exercise.checker = checker)", 
"knitr::opts_chunk$set(error = TRUE, out.width = \"100%\")"), chunk_opts = list(
    label = "setup", include = FALSE, message = FALSE, warning = FALSE)), 
    setup = NULL, chunks = list(list(label = "all", code = "ldeaths %>% \n  map(t) %>% \n  map_dfr(as_tibble)", 
        opts = list(label = "\"all\"", exercise = "TRUE"), engine = "r")), 
    code_check = NULL, error_check = NULL, check = structure("\"Great Job! You can see a strong seasonal effect in the data: more lung related deaths happen in winter. You were able to do this because of the work you put into wrangling the data with purrr. Give yourself a pat on the back!\"", chunk_opts = list(
        label = "all-check")), solution = structure(c("ldeaths %>% ", 
    "  map(t) %>% ", "  map_dfr(as_tibble) %>% ", "  summarise_all(sum)"
    ), chunk_opts = list(label = "all-solution")), tests = NULL, 
    options = list(eval = FALSE, echo = TRUE, results = "markup", 
        tidy = FALSE, tidy.opts = NULL, collapse = FALSE, prompt = FALSE, 
        comment = NA, highlight = FALSE, size = "normalsize", 
        background = "#F7F7F7", strip.white = TRUE, cache = 0, 
        cache.path = "tidying_cache/html/", cache.vars = NULL, 
        cache.lazy = TRUE, dependson = NULL, autodep = FALSE, 
        cache.rebuild = FALSE, fig.keep = "high", fig.show = "asis", 
        fig.align = "default", fig.path = "tidying_files/figure-html/", 
        dev = "png", dev.args = NULL, dpi = 192, fig.ext = "png", 
        fig.width = 6.5, fig.height = 4, fig.env = "figure", 
        fig.cap = NULL, fig.scap = NULL, fig.lp = "fig:", fig.subcap = NULL, 
        fig.pos = "", out.width = "100%", out.height = NULL, 
        out.extra = NULL, fig.retina = 2, external = TRUE, sanitize = FALSE, 
        interval = 1, aniopts = "controls,loop", warning = TRUE, 
        error = TRUE, message = TRUE, render = NULL, ref.label = NULL, 
        child = NULL, engine = "r", split = FALSE, include = TRUE, 
        purl = TRUE, max.print = 1000, exercise.timelimit = 60, 
        exercise.checker = "function (label, user_code, check_code, envir_result, evaluate_result, \n    ...) \n{\n    list(message = check_code, correct = TRUE, location = \"append\")\n}", 
        label = "all", exercise = TRUE, code = c("ldeaths %>% ", 
        "  map(t) %>% ", "  map_dfr(as_tibble)"), out.width.px = "100%", 
        out.height.px = 384, params.src = "all, exercise = TRUE", 
        fig.num = 0, exercise.df_print = "paged"), engine = "r", 
    version = "4"), class = c("r", "tutorial_exercise")))
</script>
</p>
<!--html_preserve-->
<script type="application/shiny-prerendered" data-context="dependencies">
{"type":"list","attributes":{},"value":[{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["header-attrs"]},{"type":"character","attributes":{},"value":["2.20"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["rmd/h/pandoc"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["header-attrs.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["rmarkdown"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["2.20"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["jquery"]},{"type":"character","attributes":{},"value":["3.6.0"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/3.6.0"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["jquery-3.6.0.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["jquerylib"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.1.4"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["bootstrap"]},{"type":"character","attributes":{},"value":["3.3.5"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["rmd/h/bootstrap"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["viewport"]}},"value":[{"type":"character","attributes":{},"value":["width=device-width, initial-scale=1"]}]},{"type":"character","attributes":{},"value":["js/bootstrap.min.js","shim/html5shiv.min.js","shim/respond.min.js"]},{"type":"character","attributes":{},"value":["css/cerulean.min.css"]},{"type":"character","attributes":{},"value":["<style>h1 {font-size: 34px;}\n       h1.title {font-size: 38px;}\n       h2 {font-size: 30px;}\n       h3 {font-size: 24px;}\n       h4 {font-size: 18px;}\n       h5 {font-size: 16px;}\n       h6 {font-size: 12px;}\n       code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}\n       pre:not([class]) { background-color: white }<\/style>"]},{"type":"NULL"},{"type":"character","attributes":{},"value":["rmarkdown"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["2.20"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["pagedtable"]},{"type":"character","attributes":{},"value":["1.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["rmd/h/pagedtable-1.1"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["js/pagedtable.js"]},{"type":"character","attributes":{},"value":["css/pagedtable.css"]},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["rmarkdown"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["2.20"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["highlightjs"]},{"type":"character","attributes":{},"value":["9.12.0"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["rmd/h/highlightjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["highlight.js"]},{"type":"character","attributes":{},"value":["textmate.css"]},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["rmarkdown"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["2.20"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["tutorial"]},{"type":"character","attributes":{},"value":["0.11.2"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/tutorial"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["tutorial.js"]},{"type":"character","attributes":{},"value":["tutorial.css"]},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["i18n"]},{"type":"character","attributes":{},"value":["21.6.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/i18n"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["i18next.min.js","tutorial-i18n-init.js"]},{"type":"NULL"},{"type":"character","attributes":{},"value":["<script id=\"i18n-cstm-trns\" type=\"application/json\">{\"language\":\"en\",\"resources\":{\"en\":{\"translation\":{\"button\":{\"runcode\":\"Run Code\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"Hint\",\"hint_plural\":\"Hints\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"Next Hint\",\"hintprev\":\"Previous Hint\",\"solution\":\"Solution\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"Copy to Clipboard\",\"startover\":\"Start Over\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"Continue\",\"submitanswer\":\"Submit Answer\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"Previous Topic\",\"nexttopic\":\"Next Topic\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"Try Again\"},\"text\":{\"startover\":\"Start Over\",\"areyousure\":\"Are you sure you want to start over? (all exercise progress will be reset)\",\"youmustcomplete\":\"You must complete the\",\"exercise\":\"exercise\",\"exercise_plural\":\"exercises\",\"inthissection\":\"in this section before continuing.\",\"code\":\"Code\",\"enginecap\":\"{{engine}} $t(text.code)\",\"quiz\":\"Quiz\",\"blank\":\"blank\",\"blank_plural\":\"blanks\",\"exercisecontainsblank\":\"This exercise contains {{count}} $t(text.blank).\",\"pleasereplaceblank\":\"Please replace {{blank}} with valid code.\",\"unparsable\":\"It looks like this might not be valid R code. R cannot determine how to turn your text into a complete command. You may have forgotten to fill in a blank, to remove an underscore, to include a comma between arguments, or to close an opening <code>&quot;<\\/code>, <code>'<\\/code>, <code>(<\\/code> or <code>{<\\/code> with a matching <code>&quot;<\\/code>, <code>'<\\/code>, <code>)<\\/code> or <code>}<\\/code>.\\n\",\"unparsablequotes\":\"<p>It looks like your R code contains specially formatted quotation marks or &quot;curly&quot; quotes (<code>{{character}}<\\/code>) around character strings, making your code invalid. R requires character values to be contained in straight quotation marks (<code>&quot;<\\/code> or <code>'<\\/code>).<\\/p> {{code}} <p>Don't worry, this is a common source of errors when you copy code from another app that applies its own formatting to text. You can try replacing the code on that line with the following. There may be other places that need to be fixed, too.<\\/p> {{suggestion}}\\n\",\"unparsableunicode\":\"<p>It looks like your R code contains an unexpected special character (<code>{{character}}<\\/code>) that makes your code invalid.<\\/p> {{code}} <p>Sometimes your code may contain a special character that looks like a regular character, especially if you copy and paste the code from another app. Try deleting the special character from your code and retyping it manually.<\\/p>\\n\",\"unparsableunicodesuggestion\":\"<p>It looks like your R code contains an unexpected special character (<code>{{character}}<\\/code>) that makes your code invalid.<\\/p> {{code}} <p>Sometimes your code may contain a special character that looks like a regular character, especially if you copy and paste the code from another app. You can try replacing the code on that line with the following. There may be other places that need to be fixed, too.<\\/p> {{suggestion}}\\n\",\"and\":\"and\",\"or\":\"or\",\"listcomma\":\", \",\"oxfordcomma\":\",\"}}},\"fr\":{\"translation\":{\"button\":{\"runcode\":\"Lancer le Code\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"Indication\",\"hint_plural\":\"Indications\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"Indication Suivante\",\"hintprev\":\"Indication Précédente\",\"solution\":\"Solution\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"Copier dans le Presse-papier\",\"startover\":\"Recommencer\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"Continuer\",\"submitanswer\":\"Soumettre\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"Chapitre Précédent\",\"nexttopic\":\"Chapitre Suivant\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"Réessayer\"},\"text\":{\"startover\":\"Recommencer\",\"areyousure\":\"Êtes-vous certains de vouloir recommencer? (La progression sera remise à zéro)\",\"youmustcomplete\":\"Vous devez d'abord compléter\",\"exercise\":\"l'exercice\",\"exercise_plural\":\"des exercices\",\"inthissection\":\"de cette section avec de continuer.\",\"code\":\"Code\",\"enginecap\":\"$t(text.code) {{engine}}\",\"quiz\":\"Quiz\",\"and\":\"et\",\"or\":\"ou\",\"oxfordcomma\":\"\"}}},\"es\":{\"translation\":{\"button\":{\"runcode\":\"Ejecutar código\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"Pista\",\"hint_plural\":\"Pistas\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"Siguiente pista\",\"hintprev\":\"Pista anterior\",\"solution\":\"Solución\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"Copiar al portapapeles\",\"startover\":\"Reiniciar\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"Continuar\",\"submitanswer\":\"Enviar respuesta\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"Tema anterior\",\"nexttopic\":\"Tema siguiente\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"Volver a intentar\"},\"text\":{\"startover\":\"Reiniciar\",\"areyousure\":\"¿De verdad quieres empezar de nuevo? (todo el progreso del ejercicio se perderá)\",\"youmustcomplete\":\"Debes completar\",\"exercise\":\"el ejercicio\",\"exercise_plural\":\"los ejercicios\",\"inthissection\":\"en esta sección antes de continuar.\",\"code\":\"Código\",\"enginecap\":\"$t(text.code) {{engine}}\",\"quiz\":\"Cuestionario\",\"and\":\"y\",\"or\":\"o\",\"oxfordcomma\":\"\"}}},\"pt\":{\"translation\":{\"button\":{\"runcode\":\"Executar código\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"Dica\",\"hint_plural\":\"Dicas\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"Próxima dica\",\"hintprev\":\"Dica anterior\",\"solution\":\"Solução\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"Copiar para a área de transferência\",\"startover\":\"Reiniciar\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"Continuar\",\"submitanswer\":\"Enviar resposta\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"Tópico anterior\",\"nexttopic\":\"Próximo tópico\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"Tentar novamente\"},\"text\":{\"startover\":\"Reiniciar\",\"areyousure\":\"Tem certeza que deseja começar novamente? (todo o progresso feito será perdido)\",\"youmustcomplete\":\"Você deve completar\",\"exercise\":\"o exercício\",\"exercise_plural\":\"os exercícios\",\"inthissection\":\"nesta seção antes de continuar.\",\"code\":\"Código\",\"enginecap\":\"$t(text.code) {{engine}}\",\"quiz\":\"Quiz\",\"and\":\"e\",\"or\":\"ou\",\"oxfordcomma\":\"\"}}},\"tr\":{\"translation\":{\"button\":{\"runcode\":\"Çalıştırma Kodu\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"Ipucu\",\"hint_plural\":\"İpuçları\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"Sonraki İpucu\",\"hintprev\":\"Önceki İpucu\",\"solution\":\"Çözüm\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"Pano'ya Kopyala\",\"startover\":\"Baştan Başlamak\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"Devam et\",\"submitanswer\":\"Cevabı onayla\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"Önceki Konu\",\"nexttopic\":\"Sonraki Konu\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"Tekrar Deneyin\"},\"text\":{\"startover\":\"Baştan Başlamak\",\"areyousure\":\"Baştan başlamak istediğinizden emin misiniz? (tüm egzersiz ilerlemesi kaybolacak)\",\"youmustcomplete\":\"Tamamlamalısın\",\"exercise\":\"egzersiz\",\"exercise_plural\":\"egzersizler\",\"inthissection\":\"devam etmeden önce bu bölümde\",\"code\":\"Kod\",\"enginecap\":\"$t(text.code) {{engine}}\",\"quiz\":\"Sınav\",\"oxfordcomma\":\"\"}}},\"emo\":{\"translation\":{\"button\":{\"runcode\":\"🏃\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"💡\",\"hint_plural\":\"$t(button.hint)\",\"hinttitle\":\"$t(button.hint)\",\"solution\":\"🎯\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"📋\",\"startover\":\"⏮\",\"startovertitle\":\"Start Over\",\"continue\":\"✅\",\"submitanswer\":\"🆗\",\"submitanswertitle\":\"Submit Answer\",\"previoustopic\":\"⬅\",\"nexttopic\":\"➡\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"🔁\"},\"text\":{\"startover\":\"⏮\",\"areyousure\":\"🤔\",\"youmustcomplete\":\"⚠️ 👉 🧑‍💻\",\"exercise\":\"\",\"exercise_plural\":\"\",\"inthissection\":\"\",\"code\":\"💻\",\"enginecap\":\"$t(text.code) {{engine}}\",\"oxfordcomma\":\"\"}}},\"eu\":{\"translation\":{\"button\":{\"runcode\":\"Kodea egikaritu\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"Laguntza\",\"hint_plural\":\"Laguntza\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"Aurreko laguntza\",\"hintprev\":\"Hurrengo laguntza\",\"solution\":\"Ebazpena\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"Arbelean kopiatu\",\"startover\":\"Berrabiarazi\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"Jarraitu\",\"submitanswer\":\"Erantzuna bidali\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"Aurreko atala\",\"nexttopic\":\"Hurrengo atala\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"Berriro saiatu\"},\"text\":{\"startover\":\"Berrabiarazi\",\"areyousure\":\"Berriro hasi nahi duzu? (egindako lana galdu egingo da)\",\"youmustcomplete\":\"Aurrera egin baino lehen atal honetako\",\"exercise\":\"ariketa egin behar duzu.\",\"exercise_plural\":\"ariketak egin behar dituzu.\",\"inthissection\":\"\",\"code\":\"Kodea\",\"enginecap\":\"$t(text.code) {{engine}}\",\"quiz\":\"Galdetegia\",\"oxfordcomma\":\"\"}}},\"de\":{\"translation\":{\"button\":{\"runcode\":\"Code ausführen\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"Tipp\",\"hint_plural\":\"Tipps\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"Nächster Tipp\",\"hintprev\":\"Vorheriger Tipp\",\"solution\":\"Lösung\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"In die Zwischenablage kopieren\",\"startover\":\"Neustart\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"Weiter\",\"submitanswer\":\"Antwort einreichen\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"Vorheriges Kapitel\",\"nexttopic\":\"Nächstes Kapitel\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"Nochmal versuchen\"},\"text\":{\"startover\":\"Neustart\",\"areyousure\":\"Bist du sicher, dass du neustarten willst? (der gesamte Lernfortschritt wird gelöscht)\",\"youmustcomplete\":\"Vervollstädinge\",\"exercise\":\"die Übung\",\"exercise_plural\":\"die Übungen\",\"inthissection\":\"in diesem Kapitel, bevor du fortfährst.\",\"code\":\"Code\",\"enginecap\":\"$t(text.code) {{engine}}\",\"quiz\":\"Quiz\",\"blank\":\"Lücke\",\"blank_plural\":\"Lücken\",\"pleasereplaceblank\":\"Bitte ersetze {{blank}} mit gültigem Code.\",\"unparsable\":\"Dies scheint kein gültiger R Code zu sein. R kann deinen Text nicht in einen gültigen Befehl übersetzen. Du hast vielleicht vergessen, die Lücke zu füllen, einen Unterstrich zu entfernen, ein Komma zwischen Argumente zu setzen oder ein eröffnendes <code>&quot;<\\/code>, <code>'<\\/code>, <code>(<\\/code> oder <code>{<\\/code> mit einem zugehörigen <code>&quot;<\\/code>, <code>'<\\/code>, <code>)<\\/code> oder <code>}<\\/code> zu schließen.\\n\",\"and\":\"und\",\"or\":\"oder\",\"listcomma\":\", \",\"oxfordcomma\":\",\"}}},\"ko\":{\"translation\":{\"button\":{\"runcode\":\"코드 실행\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"힌트\",\"hint_plural\":\"힌트들\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"다음 힌트\",\"hintprev\":\"이전 힌트\",\"solution\":\"솔루션\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"클립보드에 복사\",\"startover\":\"재학습\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"다음 학습으로\",\"submitanswer\":\"정답 제출\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"이전 토픽\",\"nexttopic\":\"다음 토픽\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"재시도\"},\"text\":{\"startover\":\"재학습\",\"areyousure\":\"다시 시작 하시겠습니까? (모든 예제의 진행 정보가 재설정됩니다)\",\"youmustcomplete\":\"당신은 완료해야 합니다\",\"exercise\":\"연습문제\",\"exercise_plural\":\"연습문제들\",\"inthissection\":\"이 섹션을 실행하기 전에\",\"code\":\"코드\",\"enginecap\":\"$t(text.code) {{engine}}\",\"quiz\":\"퀴즈\",\"blank\":\"공백\",\"blank_plural\":\"공백들\",\"exercisecontainsblank\":\"이 연습문제에는 {{count}}개의 $t(text.blank)이 포함되어 있습니다.\",\"pleasereplaceblank\":\"{{blank}}를 유효한 코드로 바꾸십시오.\",\"unparsable\":\"이것은 유효한 R 코드가 아닐 수 있습니다. R은 텍스트를 완전한 명령으로 변환하는 방법을 결정할 수 없습니다. 당신은 공백이나 밑줄을 대체하여 채우기, 인수를 컴마로 구분하기, 또는 <code>&quot;<\\/code>, <code>'<\\/code>, <code>(<\\/code> , <code>{<\\/code>로 시작하는 구문을 닫는 <code>&quot;<\\/code>, <code>'<\\/code>, <code>)<\\/code>, <code>}<\\/code>을 잊었을 수도 있습니다.\\n\",\"and\":\"그리고\",\"or\":\"혹은\",\"listcomma\":\", \",\"oxfordcomma\":\"\"}}},\"zh\":{\"translation\":{\"button\":{\"runcode\":\"运行代码\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"提示\",\"hint_plural\":\"提示\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"下一个提示\",\"hintprev\":\"上一个提示\",\"solution\":\"答案\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"复制到剪切板\",\"startover\":\"重新开始\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"继续\",\"submitanswer\":\"提交答案\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"上一专题\",\"nexttopic\":\"下一专题\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"再试一次\"},\"text\":{\"startover\":\"重置\",\"areyousure\":\"你确定要重新开始吗? (所有当前进度将被重置)\",\"youmustcomplete\":\"你必须完成\",\"exercise\":\"练习\",\"exercise_plural\":\"练习\",\"inthissection\":\"在进行本节之前\",\"code\":\"代码\",\"enginecap\":\"$t(text.code) {{engine}}\",\"quiz\":\"测试\",\"blank\":\"空\",\"blank_plural\":\"空\",\"exercisecontainsblank\":\"本练习包含{{count}}个$t(text.blank)\",\"pleasereplaceblank\":\"请在{{blank}}内填写恰当的代码\",\"unparsable\":\"这似乎不是有效的R代码。 R不知道如何将您的文本转换为完整的命令。 您是否忘了填空，忘了删除下划线，忘了在参数之间包含逗号，或者是忘了用<code>&quot;<\\/code>, <code>'<\\/code>, <code>)<\\/code>,<code>}<\\/code>来封闭<code>&quot;<\\/code>, <code>'<\\/code>, <code>(<\\/code>。 or <code>{<\\/code>。\\n\",\"unparsablequotes\":\"<p>您的R代码中似乎含有特殊格式的引号，或者弯引号(<code>{{character}}<\\/code>) 在字符串前后，在R中字符串应该被直引号(<code>&quot;<\\/code> 或者 <code>'<\\/code>)包裹。<\\/p> {{code}} <p>别担心，该错误经常在复制粘贴包含格式的代码时遇到， 您可以尝试将该行中的代码替换为以下代码，也许还有其他地方需要修改。<\\/p> {{suggestion}}\\n\",\"unparsableunicode\":\"<p>您的代码中似乎包含有异常字符(<code>{{character}}<\\/code>),导致代码无效。<\\/p> {{code}} <p>有时候你的代码可能含有看似正常字符的特殊字符，特别是当你复制粘贴其他来源代码的时候。 请试着删除这些特殊字符,重新输入<\\/p>\\n\",\"unparsableunicodesuggestion\":\"<p>您的代码中似乎包含有异常字符(<code>{{character}}<\\/code>),导致代码无效。<\\/p> {{code}} <p>有时候你的代码可能含有看似正常字符的特殊字符，特别是当你复制粘贴其他来源代码的时候。 请试着删除这些特殊字符,重新输入<\\/p>\\n\",\"and\":\"且\",\"or\":\"或\",\"listcomma\":\",\",\"oxfordcomma\":\",\"}}},\"pl\":{\"translation\":{\"button\":{\"runcode\":\"Uruchom kod\",\"runcodetitle\":\"$t(button.runcode) ({{kbd}})\",\"hint\":\"Podpowiedź\",\"hint_plural\":\"Podpowiedzi\",\"hinttitle\":\"$t(button.hint)\",\"hintnext\":\"Następna podpowiedź\",\"hintprev\":\"Poprzednia podpowiedź\",\"solution\":\"Rozwiązanie\",\"solutiontitle\":\"$t(button.solution)\",\"copyclipboard\":\"Kopiuj do schowka\",\"startover\":\"Zacznij od początku\",\"startovertitle\":\"$t(button.startover)\",\"continue\":\"Kontynuuj\",\"submitanswer\":\"Wyślij\",\"submitanswertitle\":\"$t(button.submitanswer)\",\"previoustopic\":\"Poprzednia sekcja\",\"nexttopic\":\"Następna sekcja\",\"questionsubmit\":\"$t(button.submitanswer)\",\"questiontryagain\":\"Spróbuj ponownie\"},\"text\":{\"startover\":\"Zacznij od początku\",\"areyousure\":\"Czy na pewno chcesz zacząć od początku? (cały postęp w zadaniu zostanie utracony)\",\"youmustcomplete\":\"Musisz ukończyć\",\"exercise\":\"ćwiczenie\",\"exercise_plural\":\"ćwiczenia\",\"inthissection\":\"w tej sekcji przed kontynuowaniem\",\"code\":\"Kod\",\"enginecap\":\"$t(text.code) {{engine}}\",\"quiz\":\"Quiz\",\"blank\":\"luka\",\"blank_plural\":\"luk(i)\",\"exercisecontainsblank\":\"To ćwiczenie zawiera {{count}} $t(text.blank).\",\"pleasereplaceblank\":\"Proszę uzupełnić {{blank}} prawidłowym kodem.\",\"unparsable\":\"Wygląda na to, że może to nie być prawidłowy kod R. R nie jest w stanie przetworzyć Twojego tekstu na polecenie. Mogłeś(-aś) zapomnieć wypełnić luki, usunąć podkreślnik, umieścić przecinka między argumentami, lub zamknąć znak <code>&quot;<\\/code>, <code>'<\\/code>, <code>(<\\/code> lub <code>{<\\/code> odpowiadającym <code>&quot;<\\/code>, <code>'<\\/code>, <code>)<\\/code> lub <code>}<\\/code>.\\n\",\"unparsablequotes\":\"<p>Wygląda na to, że Twój kod zawiera szczególnie sformatowane cudzysłowy lub cudzysłowy typograficzne (<code>{{character}}<\\/code>) przy ciągach znaków, co sprawia, że kod jest niepoprawny. R wymaga cudzysłowów prostych (<code>&quot;<\\/code> albo <code>'<\\/code>).<\\/p> {{code}} <p>Nie martw się, to powszechne źródło błędów, gdy kopiuje się kod z innego programu, który sam formatuje teskt. Możesz spróbować zastąpić swój kod następującym kodem. Mogą być też inne miejsca, które wymagają poprawienia.<\\/p> {{suggestion}}\\n\",\"unparsableunicode\":\"<p>Wygląda na to, że Twój kod zawiera niespodziewany znak specjalny (<code>{{character}}<\\/code>), co sprawia, że kod jest niepoprawny.<\\/p> {{code}} <p>Czasami Twój kod może zawierać znak specjalny, który wygląda jak zwykły znak, zwłaszcza jeśli kopiujesz kod z innego programu. Spróbuj usunąć znak specjalny i wpisać do ponownie ręcznie.<\\/p>\\n\",\"unparsableunicodesuggestion\":\"<p>Wygląda na to, że Twój kod zawiera niespodziewany znak specjalny (<code>{{character}}<\\/code>), co sprawia, że kod jest niepoprawny.<\\/p> {{code}} <p>Czasami Twój kod może zawierać znak specjalny, który wygląda jak zwykły znak, zwłaszcza jeśli kopiujesz kod z innego programu. Możesz spróbować zastąpić swój kod następującym kodem. Mogą być też inne miejsca, które wymagają poprawienia.<\\/p> {{suggestion}}\\n\",\"and\":\"i\",\"or\":\"lub\",\"listcomma\":\", \",\"oxfordcomma\":\"\"}}}}}<\/script>"]},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["tutorial-format"]},{"type":"character","attributes":{},"value":["0.11.2"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["rmarkdown/templates/tutorial/resources"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["tutorial-format.js"]},{"type":"character","attributes":{},"value":["tutorial-format.css","rstudio-theme.css"]},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["jquery"]},{"type":"character","attributes":{},"value":["3.6.0"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/3.6.0"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["jquery-3.6.0.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["jquerylib"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.1.4"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["navigation"]},{"type":"character","attributes":{},"value":["1.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["rmd/h/navigation-1.1"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["tabsets.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["rmarkdown"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["2.20"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["highlightjs"]},{"type":"character","attributes":{},"value":["9.12.0"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["rmd/h/highlightjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["highlight.js"]},{"type":"character","attributes":{},"value":["default.css"]},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["rmarkdown"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["2.20"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["jquery"]},{"type":"character","attributes":{},"value":["3.6.0"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/3.6.0"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["jquery-3.6.0.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["jquerylib"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.1.4"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["font-awesome"]},{"type":"character","attributes":{},"value":["5.1.0"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["rmd/h/fontawesome"]}]},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["css/all.css","css/v4-shims.css"]},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["rmarkdown"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["2.20"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["bootbox"]},{"type":"character","attributes":{},"value":["5.5.2"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/bootbox"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["bootbox.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["idb-keyvalue"]},{"type":"character","attributes":{},"value":["3.2.0"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/idb-keyval"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["idb-keyval-iife-compat.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[false]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["tutorial"]},{"type":"character","attributes":{},"value":["0.11.2"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/tutorial"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["tutorial.js"]},{"type":"character","attributes":{},"value":["tutorial.css"]},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["ace"]},{"type":"character","attributes":{},"value":["1.10.1"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/ace"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["ace.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","version","src","meta","script","stylesheet","head","attachment","package","all_files","pkgVersion"]},"class":{"type":"character","attributes":{},"value":["html_dependency"]}},"value":[{"type":"character","attributes":{},"value":["clipboardjs"]},{"type":"character","attributes":{},"value":["2.0.10"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["file"]}},"value":[{"type":"character","attributes":{},"value":["lib/clipboardjs"]}]},{"type":"NULL"},{"type":"character","attributes":{},"value":["clipboard.min.js"]},{"type":"NULL"},{"type":"NULL"},{"type":"NULL"},{"type":"character","attributes":{},"value":["learnr"]},{"type":"logical","attributes":{},"value":[true]},{"type":"character","attributes":{},"value":["0.11.2"]}]}]}
</script>
<!--/html_preserve-->
<!--html_preserve-->
<script type="application/shiny-prerendered" data-context="execution_dependencies">
{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["packages"]}},"value":[{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["packages","version"]},"class":{"type":"character","attributes":{},"value":["data.frame"]},"row.names":{"type":"integer","attributes":{},"value":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88]}},"value":[{"type":"character","attributes":{},"value":["assertthat","backports","base","broom","bslib","cachem","cellranger","checkmate","cli","colorspace","commonmark","compiler","crayon","curl","datasets","DBI","dbplyr","digest","dplyr","ellipsis","evaluate","fansi","fastmap","forcats","fs","gargle","generics","ggplot2","glue","googledrive","googlesheets4","graphics","grDevices","grid","gtable","haven","hms","htmltools","htmlwidgets","httpuv","httr","jquerylib","jsonlite","knitr","later","learnr","lifecycle","lubridate","magrittr","markdown","methods","mime","modelr","munsell","pillar","pkgconfig","promises","purrr","R6","Rcpp","readr","readxl","reprex","rlang","rmarkdown","rprojroot","rstudioapi","rvest","sass","scales","shiny","stats","stringi","stringr","tibble","tidyr","tidyselect","tidyverse","tools","tzdb","utf8","utils","vctrs","withr","xfun","xml2","xtable","yaml"]},{"type":"character","attributes":{},"value":["0.2.1","1.4.1","4.2.2","1.0.1","0.4.0","1.0.6","1.1.0","2.1.0","3.6.0","2.0-3","1.8.1","4.2.2","1.5.2","4.3.3","4.2.2","1.1.3","2.2.1","0.6.31","1.0.10","0.3.2","0.20","1.0.3","1.1.0","0.5.2","1.5.2","1.2.1","0.1.3","3.4.0","1.6.2","2.0.0","1.0.1","4.2.2","4.2.2","4.2.2","0.3.1","2.5.1","1.1.2","0.5.3","1.5.4","1.6.6","1.4.4","0.1.4","1.8.4","1.40","1.3.0","0.11.2","1.0.3","1.8.0","2.0.3","1.3","4.2.2","0.12","0.1.9","0.5.0","1.8.1","2.0.3","1.2.0.1","0.3.5","2.5.1","1.0.9","2.1.3","1.4.1","2.0.2","1.0.6","2.20","2.0.3","0.14","1.0.3","0.4.2","1.2.1","1.7.3","4.2.2","1.7.8","1.4.1","3.1.8","1.2.1","1.2.0","1.3.2","4.2.2","0.3.0","1.2.2","4.2.2","0.5.1","2.5.0","0.36","1.3.3","1.8-4","2.3.6"]}]}]}
</script>
<!--/html_preserve-->
</div>
</div>

</article> <!-- topics -->

<div class="topicsContainer">
<div class="topicsPositioner">
<div class="band">
<div class="bandContent topicsListContainer">

<!-- begin doc-metadata -->
<div id="doc-metadata">
<h1 class="title toc-ignore" style="display:none;">Map</h1>
</div>
<!-- end doc-metadata -->

</div> <!-- bandContent.topicsListContainer -->
</div> <!-- band -->
</div> <!-- topicsPositioner -->
</div> <!-- topicsContainer -->


</main> <!-- bandContent page -->
</div> <!-- pageContent band -->



<!-- Build Tabsets -->
<script>
$(document).ready(function () {
  window.buildTabsets("section-TOC");
});

$(document).ready(function () {
  $('.tabset-dropdown > .nav-tabs > li').click(function () {
    $(this).parent().toggleClass('nav-tabs-open')
  });
});
</script>

<script>
// add bootstrap table styles to pandoc tables
function bootstrapStylePandocTables() {
  $('tr.header').parent('thead').parent('table').addClass('table table-condensed');
}
$(document).ready(function () {
  bootstrapStylePandocTables();
});
</script>


<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
  (function () {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src  = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
    document.getElementsByTagName("head")[0].appendChild(script);
  })();
</script>


</body>

</html>
